<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 作业：
        // 1.封装一个方法处理一个数的千分位。
        // 例: 87125765218231.01245  ==> 87,125,765,218,231.01245
        var num = 25765218231.01245;//要处理的数字
        // var num = "87125765218231.01245";
        function callDistinguish(num) {
            var call = num.toFixed(0).toString();
            var mask = [];
            for (var i = 1; call.length - i >= 0; i++) {
                // console.log(call[call.length-i]);
                mask.unshift(call[call.length - i]);
                if (mask.length % 4 == 3 && mask.length != 0) {
                    mask.unshift(',');
                }
            }
            mask = mask.join("") + (num.toString().split(".")[1] ? "." + num.toString().split(".")[1] : "");
            return mask;
        }
        console.log("第一题:");
        console.log(callDistinguish(num));
        // 2. 有n个零件，只知道好的零件比坏的零件多，请设计一个算法找出所有好的零件和坏的零件，
        //     并且任意指定一个零件可以知道该零件是好的还是坏的; (说明: 生成好的零件和生成坏的零件的概率一致)
        //     比如 0 <= x < 0.5 生成好的零件
        //     0.5 <= x < 1生成坏的零件
        //     每一个零件名称不一样，比如好的零件 good1, good2, 比如坏的零件 bad3, bad4, bad5
        //     需要递归生成，一直到生成好的零件比坏的零件多
        function callAllcreate(n, cat) {//返回一个数组，里面有[好品数组good，坏品数组bad，要查看的零件信息]
            function callCenter(n) {//返回制造好的零件，为了方便统计，用了reverse()颠倒了制造的顺序
                function callPlant(n, arr) {//递归创建零件，最后返回一个零件数组
                    if (n == 0) return arr;
                    var mask = Math.random();
                    if (mask >= 0 && mask < 0.5) {
                        arr.push("good" + n);
                        check++;
                    }
                    else {
                        arr.push("bad" + n);
                    }
                    return callPlant(--n, arr);
                }
                var check = 0;
                var arr = [];
                // console.log(check);
                while (check <= (n / 2)) {
                    arr = [];
                    check = 0;
                    callPlant(n, arr);
                }
                // console.log(arr);
                // console.log(check);
                return arr.reverse();
            }
            var arr = callCenter(n);
            var good = [];
            var bad = [];
            var check = '';
            for (var i = 0; i < arr.length; i++) {
                if (arr[i].indexOf("good") > -1) {
                    good.push(arr[i]);
                    if ((i + 1) == cat) {
                        check = `第${cat}个零件为好品`;
                    }
                } else {
                    bad.push(arr[i]);
                    if ((i + 1) == cat) {
                        check = `第${cat}个零件为坏品`;
                    }
                }
            }
            var all = [];
            all.push(good);
            all.push(bad);
            all.push(check);
            return all;
        }

        var n = 2000;//要制造的零件总数
        var cat = 13;//要查看第几个零件
        //开始调用
        var all = callAllcreate(n, cat);
        console.log("第二题:");
        console.log("好的零件有:");
        console.log(all[0]);
        console.log("坏的零件有:");
        console.log(all[1]);
        console.log(all[2]);
    </script>
</body>

</html>